/* Copyright (c) 2010 OFXKit
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

#import <Cocoa/Cocoa.h>

#import "OFXRequestHelperDelegate.h"
#import "OFXDocumentRequest.h"
#import "OFXDocumentResponse.h"

@interface OFXRequestHelperBase : NSObject {
  OFXDocumentResponse* ofxResponse;
  id delegate;
  NSMutableData* receivedData;
}

/**
 * @property receivedData
 * @brief Holds data received from connection until all data has come
 * in and can be parsed.
 */
@property(retain) NSMutableData* receivedData;

/**
 * @property ofxResponse
 * @brief The OFX response document
 */
@property(readonly, retain) OFXDocumentResponse* ofxResponse;

/**
 * @property delegate
 * @brief The delegate for the request helper.  By setting the delegate
 * the calling object can receive a notification when the OFX response
 * is received.  Alternatively, use key-value observing to observe
 * when the variable ofxResponse is set.
 */
@property(retain) id delegate;

/**
 * Send an OFX request to server.  When a response is received it is 
 * parsed and the resulting OFXDocument is assigned to ofxResponse.
 * 
 * @param ofxRequest The OFX request document to send
 * @param url URL of server to communicate with
 */
- (void)sendRequest:(OFXDocumentRequest*)ofxRequest 
            withURL:(NSURL*)url
              error:(NSError**)error;

@end
